package com.uyayo.framework.limiter.annotation;



import com.uyayo.framework.limiter.exception.RequestException;

import java.lang.annotation.*;

/**
 * uyayo-framework-limiter
 * 请求限制,检查请求次数及是否符合相关要求
 * 添加方法必须有HttpServletRequest和RequestInfoEntity参数
 * Created by hfj on 2019/5/23.
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestLimiter {

    int count() default 0;

    long seconds() default 60;

    String[] params() default {};

    String prefix() default "";
    /**
     * 检查请求是否来源于本站
     * @return
     */
    boolean referer() default false;

    /**
     * 是否与IP进行耦合限制标记
     * @return
     */
    boolean ipParallel() default true;

    /**
     * 如需检查token,需要标明token key名称,优先取头部token检查
     * @return
     */
    String csrfToken() default "";

    /**
     * token允许使用的最大次数
     * 默认0,只要存在即可使用无限次
     */
    int tokenCount() default 0;

    Class<? extends RequestException>[] exception() default {};
}
